﻿namespace Contoso.ActiveDirectory {

    #region Usings
    using System;
    using System.Collections.Generic;
    using System.DirectoryServices;
    using System.Linq;
    using System.Text; 
    #endregion

    public interface IExchangeBaseAttributes {
        string AltRecipient { get; }
        string LegacyExchangeDN { get; }
        string MailNickname { get; }
        string MapiRecipient { get; }
        int MSExchALObjectVersion { get; }
        bool MSExchHideFromAddressLists { get; }
        IReadOnlyList<ActiveDirectoryAccessRule> MSExchMailboxExplicitAccessRules { get; }
        ActiveDirectorySecurity MSExchMailboxSecurityDescriptor { get; }
        MSExchRecipientDisplayType MSExchRecipientDisplayType { get; }
        MSExchRecipientTypeDetails MSExchRecipientTypeDetails { get; }
        MSExchVersion MSExchVersion { get; }
        IReadOnlyList<string> ProxyAddresses { get; }
        IReadOnlyList<string> ProxyAddressesSMTPFiltered { get; }
        IReadOnlyList<string> ShowInAddressBook { get; }
        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/aa487600%28v=exchg.65%29.aspx
        /// Exchange Server 2003 The TargetAddress property specifies the delivery address to which e-mail for this recipient should be sent. 
        /// This property is read-only.
        /// Messages sent to any of the addresses specified by the ProxyAddresses Property will actually get delivered to the one specified by the TargetAddress property. 
        /// The primary address in the ProxyAddresses list appears on the reply-to line of messages sent from this recipient.
        /// The default value for this property is NULL (no address specified).
        /// </summary>
        string TargetAddress { get; }

        void ProcessResults(Dictionary<string, object[]> attributes);
    }
}
